#include "page4.h"
#include "ui_page4.h"

Page4::Page4(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Page4)
{
    ui->setupUi(this);
    QString path = qApp->applicationDirPath();
    QStringList list = path.split("/");
    list.last()="DB";
    QString p;
    for(auto tmp:list)
    {
        if(tmp!=list.last())
            p+=tmp+"/";
        else {
            p+=tmp;
        }
    }
    ui->lineEdit->setText(p);
    ui->lineEdit->setFocusPolicy(Qt::NoFocus);
}

Page4::~Page4()
{
    delete ui;
}

void Page4::on_pushButton_clicked()
{
    QFileDialog *fileDialog = new QFileDialog(this);
        //定义文件对话框标题
    fileDialog->setWindowTitle(tr("打开图片"));
    //设置默认文件路径
    fileDialog->setDirectory(ui->lineEdit->text());
    //设置文件过滤器
    fileDialog->setNameFilter(tr("Images(*.png *.jpg *.jpeg *.bmp)"));
    //设置可以选择多个文件,默认为只能选择一个文件QFileDialog::ExistingFiles
    fileDialog->setFileMode(QFileDialog::ExistingFiles);
    //设置视图模式
    fileDialog->setViewMode(QFileDialog::Detail);
    //打印所有选择的文件的路径
    if(fileDialog->exec())
    {
        filePaths = fileDialog->selectedFiles();
     //   fileNames = fileDialog->getOpenFileNames();

    }
    emit sendNewStr("[消息]片段已成功导入！");
    emit sendNewStr("[消息]导入片段正在进行分类，请稍后...");
    for(auto tmp : filePaths)
    {
        QStringList list = tmp.split("/");
        //将分类后的结果进行显示
        auto tmp2 = "DB/"+list.last();
        QStringList arguments;
        arguments<<tmp2;
        myProcess.startDetached("RNN.exe",arguments);
//        myProcess.waitForStarted();
//        myProcess.waitForFinished();
        qDebug()<<QString::fromLocal8Bit(myProcess.readAllStandardOutput());
    }
    showImageList();
    sleep(10000);
    emit sendNewStr("[消息]片段处理完毕，已显示!");
    showImageList2();
}
void Page4::showImageList()
{
    //设置QListWidget的显示模式
    ui->listWidget->setViewMode(QListView::IconMode);
    //设置QListWidget中单元项的图片大小
    ui->listWidget->setIconSize(QSize(250,250));
    //设置QListWidget中单元项的间距
    ui->listWidget->setSpacing(30);
    //设置自动适应布局调整（Adjust适应，Fixed不适应），默认不适应
    ui->listWidget->setResizeMode(QListWidget::Adjust);
    //设置不能移动
    ui->listWidget->setMovement(QListWidget::Static);
/*******************************************************************/

    for(auto tmp : filePaths)
    {
        //定义QListWidgetItem对象
        QListWidgetItem *imageItem = new QListWidgetItem;
        //为单元项设置属性
        imageItem->setIcon(QIcon(tmp));
        //设置文件名字并显示
        QStringList list = tmp.split("/");
        imageItem->setText(tr(list.last().toUtf8().data()));
        //重新设置单元项图片的宽度和高度
        imageItem->setSizeHint(QSize(250,250));
        //将单元项添加到QListWidget中
        ui->listWidget->addItem(imageItem);
    }


}
void Page4::showImageList2()
{
    ui->listWidget_2->setViewMode(QListView::IconMode);
    //设置QListWidget中单元项的图片大小
    ui->listWidget_2->setIconSize(QSize(250,250));
    //设置QListWidget中单元项的间距
    ui->listWidget_2->setSpacing(30);
    //设置自动适应布局调整（Adjust适应，Fixed不适应），默认不适应
    ui->listWidget_2->setResizeMode(QListWidget::Adjust);
    //设置不能移动
    ui->listWidget_2->setMovement(QListWidget::Static);
    for(auto tmp : filePaths)
    {
        QStringList list = tmp.split("/");
        //将分类后的结果进行显示
        auto tmp2 = "out/"+list.last();
        //定义QListWidgetItem对象
        QListWidgetItem *imageItem2 = new QListWidgetItem;
        //为单元项设置属性
        imageItem2->setIcon(QIcon(tmp2));
        //设置文件名字并显示
        QStringList list2 = tmp2.split("/");
        imageItem2->setText(tr(list2.last().toUtf8().data()));
        //重新设置单元项图片的宽度和高度
        imageItem2->setSizeHint(QSize(250,250));
        //将单元项添加到QListWidget中
        ui->listWidget_2->addItem(imageItem2);
    }
}

void Page4::on_listWidget_itemDoubleClicked(QListWidgetItem *item)
{
    QLabel *ql = new QLabel;
    QString path = ui->lineEdit->text();
    path+="/"+item->text();
    ql->setPixmap(path);
    ql->setWindowFlags(Qt::WindowStaysOnTopHint);
    ql->show();

}

void Page4::on_listWidget_2_itemDoubleClicked(QListWidgetItem *item)
{
    QLabel *ql = new QLabel;
    QString path = ui->lineEdit->text();
    QStringList list = path.split("/");
    list.last()="out";
    QString p;
    for(auto tmp:list)
    {
        if(tmp!=list.last())
            p+=tmp+"/";
        else {
            p+=tmp+"/"+item->text();
        }
    }
    ql->setPixmap(p);
    ql->setWindowFlags(Qt::WindowStaysOnTopHint);
    ql->show();
}


void Page4::sleep(unsigned int msec)
{
    QTime dieTime = QTime::currentTime().addMSecs(msec);
    while( QTime::currentTime() < dieTime )
    QCoreApplication::processEvents(QEventLoop::AllEvents, 100);
}
